Apache ActiveMQ হলো একটি ওপেন সোর্স মেসেজ ব্রোকার, যা Java Message Service (JMS) এর উপর ভিত্তি করে তৈরি করা হয়েছে। এটি অ্যাপ্লিকেশনগুলির মধ্যে মেসেজ আদান-প্রদান করার জন্য ব্যবহৃত হয় এবং বিভিন্ন প্রকারের মেসেজিং প্যাটার্ন সমর্থন করে, যেমন পয়েন্ট-টু-পয়েন্ট (Queue) এবং পাবলিশ-সাবস্ক্রাইব (Topic)। ActiveMQ সাধারণত মাইক্রোসার্ভিস, ইন্টারপ্রাইজ অ্যাপ্লিকেশন এবং অন্যান্য ডিস্ট্রিবিউটেড সিস্টেমে ব্যবহৃত হয়।
Apache ActiveMQ হলো একটি ওপেন সোর্স মেসেজ ব্রোকার, যা JMS (Java Message Service) স্পেসিফিকেশন অনুসরণ করে এবং ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোর মধ্যে মেসেজিং সিস্টেম পরিচালনা করতে ব্যবহৃত হয়। এটি একটি Message-Oriented Middleware (MOM), যা অ্যাসিঙ্ক্রোনাসভাবে মেসেজ প্রেরণ এবং গ্রহণ করতে সক্ষম। ActiveMQ মূলত মাইক্রোসার্ভিস আর্কিটেকচার এবং এন্টারপ্রাইজ অ্যাপ্লিকেশন এর মধ্যে যোগাযোগ ব্যবস্থা স্থাপন করতে সহায়ক।
ActiveMQ Pub/Sub (Publish-Subscribe) এবং P2P (Point-to-Point) মেসেজিং মডেল সমর্থন করে এবং এটি বিভিন্ন প্রোটোকল, যেমন AMQP, MQTT, STOMP, OpenWire ইত্যাদি সমর্থন করে। ActiveMQ এর মাধ্যমে আপনি উচ্চ কর্মক্ষমতা সম্পন্ন এবং নির্ভরযোগ্য মেসেজ ট্রান্সফার ব্যবস্থা তৈরি করতে পারেন, যা লো ল্যাটেন্সি এবং হাই থ্রুপুট নিশ্চিত করে।
ধাপ ১: Apache ActiveMQ ইনস্টল করা
# Linux/macOS এ
cd apache-activemq-5.x.x/bin
./activemq start
# Windows এ
cd apache-activemq-5.x.x/bin
activemq.bat start
ActiveMQ সার্ভারটি চালু হলে আপনি http://localhost:8161/admin/ এই URL থেকে ActiveMQ Web Console অ্যাক্সেস করতে পারবেন। ডিফল্ট লগইন তথ্য হলো:
ধাপ ২: একটি JMS Queue তৈরি করা
ActiveMQ এর মাধ্যমে Point-to-Point (P2P) মেসেজিং এর জন্য একটি JMS Queue তৈরি করা হয়। Queue এর মাধ্যমে মেসেজগুলো একাধিক producer এবং consumer এর মধ্যে আদান-প্রদান করা যায়।
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Producer {
public static void main(String[] args) throws Exception {
// ActiveMQ কানেকশন ফ্যাক্টরি তৈরি করা
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// কানেকশন এবং সেশন তৈরি করা
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Queue তৈরি করা
Destination queue = session.createQueue("TestQueue");
// প্রডিউসার তৈরি করা
MessageProducer producer = session.createProducer(queue);
// মেসেজ পাঠানো
TextMessage message = session.createTextMessage("Hello from ActiveMQ!");
producer.send(message);
System.out.println("Message sent: " + message.getText());
// সংযোগ বন্ধ করা
producer.close();
session.close();
connection.close();
}
}
ধাপ ৩: একটি JMS Consumer তৈরি করা
একই Queue থেকে মেসেজ গ্রহণ করতে একটি consumer তৈরি করতে হবে:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Consumer {
public static void main(String[] args) throws Exception {
// ActiveMQ কানেকশন ফ্যাক্টরি তৈরি করা
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// কানেকশন এবং সেশন তৈরি করা
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Queue তৈরি করা
Destination queue = session.createQueue("TestQueue");
// কনজিউমার তৈরি করা
MessageConsumer consumer = session.createConsumer(queue);
// মেসেজ গ্রহণ করা
TextMessage message = (TextMessage) consumer.receive();
System.out.println("Message received: " + message.getText());
// সংযোগ বন্ধ করা
consumer.close();
session.close();
connection.close();
}
}
ধাপ ৪: Pub/Sub মডেল ব্যবহার করা
Publish-Subscribe (Pub/Sub) মেসেজিং মডেলে, একটি Topic এর মাধ্যমে publisher এবং subscriber এর মধ্যে মেসেজ আদান-প্রদান করা হয়।
Publisher:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Publisher {
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Topic তৈরি করা
Topic topic = session.createTopic("TestTopic");
// Publisher তৈরি করা
MessageProducer producer = session.createProducer(topic);
TextMessage message = session.createTextMessage("Message for subscribers!");
producer.send(message);
System.out.println("Published message: " + message.getText());
producer.close();
session.close();
connection.close();
}
}
Subscriber:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Subscriber {
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Topic সাবস্ক্রাইব করা
Topic topic = session.createTopic("TestTopic");
// Subscriber তৈরি করা
MessageConsumer consumer = session.createConsumer(topic);
// মেসেজ গ্রহণ করা
TextMessage message = (TextMessage) consumer.receive();
System.out.println("Received message: " + message.getText());
consumer.close();
session.close();
connection.close();
}
}
ধাপ ৫: Apache ActiveMQ এর Web Console ব্যবহার করা
Apache ActiveMQ এর একটি শক্তিশালী Web Console রয়েছে, যেখানে আপনি সার্ভার পরিচালনা করতে এবং মেসেজ ম্যানেজমেন্ট করতে পারবেন। Web Console থেকে আপনি মেসেজ queue এবং topic এর অবস্থা দেখতে পারবেন, মেসেজ পাঠাতে এবং গ্রহণ করতে পারবেন, এবং সার্ভারের কার্যক্রম পর্যবেক্ষণ করতে পারবেন।
URL: http://localhost:8161/admin/
ধাপ ৬: Persistence এবং Durability কনফিগারেশন
ActiveMQ মেসেজগুলোকে persistent করতে পারে, অর্থাৎ সার্ভার বন্ধ হলেও মেসেজগুলো হারিয়ে যাবে না। এছাড়া durable subscriber ব্যবহার করে Pub/Sub মেসেজিং মডেলে সাবস্ক্রাইবার মেসেজ হারাবে না, এমনকি যখন তারা অনুপস্থিত থাকে।
Persistent মেসেজ:
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Durable Subscriber:
TopicSubscriber subscriber = session.createDurableSubscriber(topic, "subscriberName");
Apache ActiveMQ হলো একটি শক্তিশালী এবং কার্যকর মেসেজ ব্রোকার, যা JMS এর মাধ্যমে ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোর মধ্যে মেসেজ আদান-প্রদান সহজ করে। এটি Point-to-Point (Queue) এবং Publish-Subscribe (Topic) মডেল সমর্থন করে এবং উচ্চ কর্মক্ষমতা, নিরাপত্তা, এবং নির্ভরযোগ্যতা নিশ্চিত করে। ActiveMQ বড় অ্যাপ্লিকেশন এবং মাইক্রোসার্ভিস আর্কিটেকচারের জন্য আদর্শ একটি সমাধান, যা বিভিন্ন প্রোটোকল সমর্থন এবং বিভিন্ন প্ল্যাটফর্মের সাথে ইন্টিগ্রেশন সরবরাহ করে।
Apache ActiveMQ হলো একটি ওপেন সোর্স মেসেজ ব্রোকার, যা Java Message Service (JMS) এর উপর ভিত্তি করে তৈরি করা হয়েছে। এটি অ্যাপ্লিকেশনগুলির মধ্যে মেসেজ আদান-প্রদান করার জন্য ব্যবহৃত হয় এবং বিভিন্ন প্রকারের মেসেজিং প্যাটার্ন সমর্থন করে, যেমন পয়েন্ট-টু-পয়েন্ট (Queue) এবং পাবলিশ-সাবস্ক্রাইব (Topic)। ActiveMQ সাধারণত মাইক্রোসার্ভিস, ইন্টারপ্রাইজ অ্যাপ্লিকেশন এবং অন্যান্য ডিস্ট্রিবিউটেড সিস্টেমে ব্যবহৃত হয়।
Apache ActiveMQ হলো একটি ওপেন সোর্স মেসেজ ব্রোকার, যা JMS (Java Message Service) স্পেসিফিকেশন অনুসরণ করে এবং ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোর মধ্যে মেসেজিং সিস্টেম পরিচালনা করতে ব্যবহৃত হয়। এটি একটি Message-Oriented Middleware (MOM), যা অ্যাসিঙ্ক্রোনাসভাবে মেসেজ প্রেরণ এবং গ্রহণ করতে সক্ষম। ActiveMQ মূলত মাইক্রোসার্ভিস আর্কিটেকচার এবং এন্টারপ্রাইজ অ্যাপ্লিকেশন এর মধ্যে যোগাযোগ ব্যবস্থা স্থাপন করতে সহায়ক।
ActiveMQ Pub/Sub (Publish-Subscribe) এবং P2P (Point-to-Point) মেসেজিং মডেল সমর্থন করে এবং এটি বিভিন্ন প্রোটোকল, যেমন AMQP, MQTT, STOMP, OpenWire ইত্যাদি সমর্থন করে। ActiveMQ এর মাধ্যমে আপনি উচ্চ কর্মক্ষমতা সম্পন্ন এবং নির্ভরযোগ্য মেসেজ ট্রান্সফার ব্যবস্থা তৈরি করতে পারেন, যা লো ল্যাটেন্সি এবং হাই থ্রুপুট নিশ্চিত করে।
ধাপ ১: Apache ActiveMQ ইনস্টল করা
# Linux/macOS এ
cd apache-activemq-5.x.x/bin
./activemq start
# Windows এ
cd apache-activemq-5.x.x/bin
activemq.bat start
ActiveMQ সার্ভারটি চালু হলে আপনি http://localhost:8161/admin/ এই URL থেকে ActiveMQ Web Console অ্যাক্সেস করতে পারবেন। ডিফল্ট লগইন তথ্য হলো:
ধাপ ২: একটি JMS Queue তৈরি করা
ActiveMQ এর মাধ্যমে Point-to-Point (P2P) মেসেজিং এর জন্য একটি JMS Queue তৈরি করা হয়। Queue এর মাধ্যমে মেসেজগুলো একাধিক producer এবং consumer এর মধ্যে আদান-প্রদান করা যায়।
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Producer {
public static void main(String[] args) throws Exception {
// ActiveMQ কানেকশন ফ্যাক্টরি তৈরি করা
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// কানেকশন এবং সেশন তৈরি করা
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Queue তৈরি করা
Destination queue = session.createQueue("TestQueue");
// প্রডিউসার তৈরি করা
MessageProducer producer = session.createProducer(queue);
// মেসেজ পাঠানো
TextMessage message = session.createTextMessage("Hello from ActiveMQ!");
producer.send(message);
System.out.println("Message sent: " + message.getText());
// সংযোগ বন্ধ করা
producer.close();
session.close();
connection.close();
}
}
ধাপ ৩: একটি JMS Consumer তৈরি করা
একই Queue থেকে মেসেজ গ্রহণ করতে একটি consumer তৈরি করতে হবে:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Consumer {
public static void main(String[] args) throws Exception {
// ActiveMQ কানেকশন ফ্যাক্টরি তৈরি করা
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// কানেকশন এবং সেশন তৈরি করা
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Queue তৈরি করা
Destination queue = session.createQueue("TestQueue");
// কনজিউমার তৈরি করা
MessageConsumer consumer = session.createConsumer(queue);
// মেসেজ গ্রহণ করা
TextMessage message = (TextMessage) consumer.receive();
System.out.println("Message received: " + message.getText());
// সংযোগ বন্ধ করা
consumer.close();
session.close();
connection.close();
}
}
ধাপ ৪: Pub/Sub মডেল ব্যবহার করা
Publish-Subscribe (Pub/Sub) মেসেজিং মডেলে, একটি Topic এর মাধ্যমে publisher এবং subscriber এর মধ্যে মেসেজ আদান-প্রদান করা হয়।
Publisher:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Publisher {
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Topic তৈরি করা
Topic topic = session.createTopic("TestTopic");
// Publisher তৈরি করা
MessageProducer producer = session.createProducer(topic);
TextMessage message = session.createTextMessage("Message for subscribers!");
producer.send(message);
System.out.println("Published message: " + message.getText());
producer.close();
session.close();
connection.close();
}
}
Subscriber:
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Subscriber {
public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = factory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// Topic সাবস্ক্রাইব করা
Topic topic = session.createTopic("TestTopic");
// Subscriber তৈরি করা
MessageConsumer consumer = session.createConsumer(topic);
// মেসেজ গ্রহণ করা
TextMessage message = (TextMessage) consumer.receive();
System.out.println("Received message: " + message.getText());
consumer.close();
session.close();
connection.close();
}
}
ধাপ ৫: Apache ActiveMQ এর Web Console ব্যবহার করা
Apache ActiveMQ এর একটি শক্তিশালী Web Console রয়েছে, যেখানে আপনি সার্ভার পরিচালনা করতে এবং মেসেজ ম্যানেজমেন্ট করতে পারবেন। Web Console থেকে আপনি মেসেজ queue এবং topic এর অবস্থা দেখতে পারবেন, মেসেজ পাঠাতে এবং গ্রহণ করতে পারবেন, এবং সার্ভারের কার্যক্রম পর্যবেক্ষণ করতে পারবেন।
URL: http://localhost:8161/admin/
ধাপ ৬: Persistence এবং Durability কনফিগারেশন
ActiveMQ মেসেজগুলোকে persistent করতে পারে, অর্থাৎ সার্ভার বন্ধ হলেও মেসেজগুলো হারিয়ে যাবে না। এছাড়া durable subscriber ব্যবহার করে Pub/Sub মেসেজিং মডেলে সাবস্ক্রাইবার মেসেজ হারাবে না, এমনকি যখন তারা অনুপস্থিত থাকে।
Persistent মেসেজ:
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Durable Subscriber:
TopicSubscriber subscriber = session.createDurableSubscriber(topic, "subscriberName");
Apache ActiveMQ হলো একটি শক্তিশালী এবং কার্যকর মেসেজ ব্রোকার, যা JMS এর মাধ্যমে ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোর মধ্যে মেসেজ আদান-প্রদান সহজ করে। এটি Point-to-Point (Queue) এবং Publish-Subscribe (Topic) মডেল সমর্থন করে এবং উচ্চ কর্মক্ষমতা, নিরাপত্তা, এবং নির্ভরযোগ্যতা নিশ্চিত করে। ActiveMQ বড় অ্যাপ্লিকেশন এবং মাইক্রোসার্ভিস আর্কিটেকচারের জন্য আদর্শ একটি সমাধান, যা বিভিন্ন প্রোটোকল সমর্থন এবং বিভিন্ন প্ল্যাটফর্মের সাথে ইন্টিগ্রেশন সরবরাহ করে।